/*
 * @Author: your name
 * @Date: 2021-01-11 17:47:15
 * @LastEditTime: 2021-01-14 09:46:39
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \shopping\src\utils\request.js
 */

const baseURL = "https://api-hmugo-web.itheima.net/api/public/v1"
// 计数器，记录请求的数量
let requestCount = 0;

const request = (config) => {
    return new Promise((resolve, reject) => {

        uni.showNavigationBarLoading();
        requestCount++;

        // 发起请求前，自动添加请求头，自动带上 token（相当于以前的请求拦截器）
        if (config.url.startsWith('/my/')) {
            config.header = {
                ...config.header, // 稳妥起见，先展开原本的 header，再额外添加 Authorization
                Authorization: uni.getStorageSync('token'),
            }
        }
        uni.request({
            // 将剩余配置展开
            ...config,
            // 拼接接口路径
            url: baseURL + config.url,
            // 成功返回数据
            success: (res) => {
                resolve(res)
            },
            // 失败返回
            fail: (err) => {
                reject(err)
            },
            // 请求完成：不管成功失败
            complete: () => {
                requestCount--;
                // 当请求数量为0时，表示所有请求都以完成，关闭加载中图标
                if (requestCount === 0) {
                    uni.hideNavigationBarLoading()
                }
            }
        });
    })
}

export default request